package com.suda.es.config;

import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.elasticsearch.client.ClientConfiguration;
import org.springframework.data.elasticsearch.client.RestClients;
import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;

@Configuration
public class ElasticSearchClientConfig extends AbstractElasticsearchConfiguration {

    //SpringBoot的版本和Elasticsearch的版本要严格对应,否则可能会出现各种各样的问题
    //该 RestHighLevelClient 用于替换旧版的 TransportClient 对象
    @Override
    @Bean
    public RestHighLevelClient elasticsearchClient() {
        //定义客户端配置对象
        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                //由于使用的是Rest客户端,而不是使用TCP客户端,所以端口号是9200
                //如果操作的是集群,则将集群的每一个节点地址写入即可,也可以只写入任意一个节点,但不够安全,该节点有宕机的可能性
                .connectedTo("192.168.1.146:9201","192.168.1.146:9202","192.168.1.146:9203")
                .build();
        //通过 RestClients 对象创建
        return RestClients.create(clientConfiguration).rest();
    }

}
